package com.hg.admin.service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


import com.hg.admin.db.dao.UserDAO;
import com.hg.admin.db.dto.UserAddDTO;
import com.hg.admin.db.dto.UserDTO;
import com.hg.admin.db.dto.UserOperationDTO;
import com.hg.admin.vo.VO4User;
import com.hg.admin.vo.VO4userAdd;
import com.hg.admin.vo.VO4userOperation;
import com.hg.util.common.Common;

public class UserService
{
	UserDAO dao = new UserDAO();
	/**
	 * 业务层,格式化数据,dto对象转化成vo对象
	 * @param dto
	 * @return
	 */
	private VO4User format(UserDTO dto){
		VO4User vo = new VO4User();
		vo.setId(dto.getId());
		vo.setUser_name(dto.getUser_name());
		vo.setMobile(dto.getMobile());
		vo.setMoney(dto.getMoney());
		vo.setScore(dto.getScore());
		vo.setFx_money(dto.getFx_money());
		vo.setGroup_id(dto.getGroup_id());
		if(dto.getGroup_name()==null||"".equals(dto.getGroup_name())){
			vo.setGroup_name("游客");
		}else{
			vo.setGroup_name(dto.getGroup_name());
		}
		vo.setCreate_time(Common.TimeStampToString((long)dto.getCreate_time(),"yyyyMMdd HH:mm:ss"));
		if(1==dto.getIs_effect()){
			vo.setIs_effect("有效");
		}else{
			vo.setIs_effect("无效");
		}
		
		return vo;
	}
	
	/**
	 * @param sql
	 * @return	total
	 * 			rows :VO4User集合
	 */
	public Map<String, Object> index(Map<String, Object> args_data){
		Map<String, Object> data = dao.index(args_data);
		List<UserDTO> list = new ArrayList<UserDTO>();
		list = (List<UserDTO>) data.get("rows");
		
		List<VO4User> rows = new ArrayList<VO4User>();
		for(int i=0;i<list.size();i++){
			UserDTO dto = list.get(i);
			rows.add(this.format(dto));
		}
		
		
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("total", data.get("total"));
		map.put("rows", rows);
		
		return map;
	}
	
	/**
	 * 添加会员
	 * 
	 * @param vo
	 * @return
	 */
	public boolean userAdd(VO4userAdd vo) {
		if (Common.checkParam(vo.getName(), vo.getLevel(), vo.getMobile(),
				vo.getState(), vo.getPassword())) {
			UserAddDTO dto = new UserAddDTO();
			dto.setUser_name(vo.getName());
			dto.setUser_pwd(vo.getPassword());
			dto.setMobile(vo.getMobile());
			dto.setCreate_time(Common.getTimeStamp());
			dto.setGroup_id(Integer.valueOf(vo.getLevel()));
			dto.setIs_effect(Integer.valueOf(vo.getState()));
			if (dao.creatUser(dto)) {
				return true;
			}
		}
		return false;
	}
	
	public boolean updateUser(UserAddDTO dto){
		return dao.updateUser(dto);
	}
	
	public UserAddDTO getOne(int id){
		UserAddDTO dto= dao.getOne(id);
		return dto;
	}
	
	public boolean del(int id){
		return dao.del(id);
	}
	public boolean dels(String ids){
		return dao.dels(ids);
	}
	
	public boolean updataAccount(VO4userOperation vo){
		//判断是否为空
		if (Common.checkParam(vo.getU_id(),vo.getDesc(),vo.getAdmin_id(),vo.getAdmin_name())) {
			//存进DTO
			UserOperationDTO dto = new UserOperationDTO();
			dto.setUser_name(dao.getOne(Integer.valueOf(vo.getU_id())).getUser_name());
			dto.setAdmin_id(vo.getAdmin_id());
			dto.setAdmin_name(vo.getAdmin_name());							
			dto.setU_id(vo.getU_id());
			//判断余额是否为空
			if(Common.checkParam(vo.getMoney())){
				dto.setMoney(Double.valueOf(vo.getMoney()));
				if(dto.getMoney()>0){
					dto.setMoneyDesc(dto.getAdmin_name()+"为"+dto.getUser_name()+
							"充值余额"+Math.abs(dto.getMoney()));
				}else{
					dto.setMoneyDesc(dto.getAdmin_name()+"为"+dto.getUser_name()+
							"扣除余额"+Math.abs(dto.getMoney()));
				}
			}else{
				dto.setMoney(0);
			}
			//判断佣金是否为空
			if(Common.checkParam(vo.getFx_money()))	{
				dto.setFx_money(Double.valueOf(vo.getFx_money()));
				if(dto.getFx_money()>0){
					dto.setFx_moneyDesc(dto.getAdmin_name()+"为"+dto.getUser_name()+
							"充值佣金"+Math.abs(dto.getFx_money()));
				}else{
					dto.setFx_moneyDesc(dto.getAdmin_name()+"为"+dto.getUser_name()+
							"扣除佣金"+Math.abs(dto.getFx_money()));
				}
			}else{
				dto.setFx_money(0);
			}
			//判断积分是否为空
			if(Common.checkParam(vo.getScore()))	{
				dto.setScore(Double.valueOf(vo.getScore()));
				if(dto.getScore()>0){
					dto.setScoreDesc(dto.getAdmin_name()+"为"+dto.getUser_name()+
							"充值积分"+Math.abs(dto.getScore()));
				}else{
					dto.setScoreDesc(dto.getAdmin_name()+"为"+dto.getUser_name()+
							"扣除积分"+Math.abs(dto.getScore()));
				}
			}else{
				dto.setScore(0);
			}											
				
				if(dao.updataAccount(dto)){
					return true;
				}
				
			}		
		return false;
	}
}
